﻿/*
 * Carga los datos desde el XML "smist_datos_ave" a Base de Datos SQLite
 */

function cargarDatosAve() {
    // Cargar tabla smist_datos_ave
    $.get("../data/smist/smist_datos_ave.xml", function(xml) {
        $(xml).find("row").each(function() {
            id_senal                = $(this).find('id_senal').text();
            fecha_averia            = $(this).find('fecha_averia').text();
            login_registro          = $(this).find('login_registro').text();
            fecha_registro          = $(this).find('fecha_registro').text();
            login_reparacion        = $(this).find('login_reparacion').text();
            fecha_reparacion        = $(this).find('fecha_reparacion').text();
            id_motiv_ave            = $(this).find('id_motiv_ave').text();
            id_status_ave           = $(this).find('id_status_ave').text();
            observaciones           = $(this).find('observaciones').text();
            ruta_img1               = $(this).find('ruta_img1').text();
            ruta_img2               = $(this).find('ruta_img2').text();
            ruta_img3               = $(this).find('ruta_img3').text();

            insertarDatosAveXML(id_senal, fecha_averia, login_registro, fecha_registro, login_reparacion, fecha_reparacion, id_motiv_ave, id_status_ave, observaciones, ruta_img1, ruta_img2, ruta_img3);
        });
    });
}


/*
 * Insertar los Datos de una Avería desde un XML
 */

function insertarDatosAveXML(id_senal, fecha_averia, login_registro, fecha_registro, login_reparacion, fecha_reparacion, id_motiv_ave, id_status_ave, observaciones, ruta_img1, ruta_img2, ruta_img3) {
    db.transaction(function(tx) {
        tx.executeSql('INSERT INTO smist_datos_ave (id_senal, fecha_averia, login_registro, fecha_registro, login_reparacion, fecha_reparacion, id_motiv_ave, id_status_ave, observaciones, ruta_img1, ruta_img2, ruta_img3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [ id_senal, fecha_averia, login_registro, fecha_registro, login_reparacion, fecha_reparacion, id_motiv_ave, id_status_ave, observaciones, ruta_img1, ruta_img2, ruta_img3 ]);
    });
}


/*
 * Insertar los Datos de una Avería Localmente
 */

function insertarDatosAve( id_senal, fecha_averia, login_registro, id_motiv_ave, observaciones ) {
	
	// Obtenemos la Fecha de Registro
	now = new Date();
	fecha_registro = dateFormat(now, "yyyy-mm-dd H:MM:ss");
	
	fecha_ave = formatDateSQLite(fecha_averia);
	
	db.transaction(function(tx) {
		tx.executeSql('INSERT INTO smist_datos_ave (id_senal, fecha_averia, login_registro, fecha_registro, id_motiv_ave, id_status_ave, observaciones) VALUES (?, ?, ?, ?, ?, ?, ?)', [id_senal, fecha_ave, login_registro, fecha_registro, id_motiv_ave, 1, observaciones], resInsertarDatosAve);
	});
}


/*
 * Retornar el ID de la Avería insertada Localmente
 */

function resInsertarDatosAve(tx, rs) {
	id_averia = rs.insertId;
	
	navigator.notification.confirm("Avería de la Señal de Tránsito registrada Existosamente en el Dispositivo Movil.\n\nRecuerde Sincronizar los Datos con el Servidor.", irSubMenuAve, acronimo_sistema, "Aceptar,");
}


/*
 * Consultar el Número de Filas de la Tabla para la Sincronización
 */

function consultarNroFilasDatosAve() {
    db.transaction(function(tx) {
        tx.executeSql('SELECT * FROM smist_datos_ave', [], resConsultarNroFilasDatosAve);
    });
}


/*
 * Respuesta a Consultar el Número de Filas de la Tabla para la Sincronización
 */

function resConsultarNroFilasDatosAve(tx, rs) {
    $('#h_nro_filas_datos_ave').val( rs.rows.length );
}


/*
 * Sincronizar los Datos
 */

function sincronizarDatosAve() {
    db.transaction(function(tx) {
        tx.executeSql('SELECT * FROM smist_datos_ave', [], resSincronizarDatosAve);
    });
}


/*
 * Respuesta a Sincronizar los Datos
 */

function resSincronizarDatosAve(tx, rs) {
    // Si hay una Respuesta exitosa
    if ( rs.rows.length > 0 ) {
        for(var i=0; i < rs.rows.length; i++) {
			r = rs.rows.item(i);
        	
			id_averia_Sync 			= r['id_averia'];
			
			eliminarDatosAve( id_averia_Sync );
			
			// Llamamos al Servicio
			var ajaxManager = $.manageAjax.create('cola_ajax',{manageType: 'queue', maxReq: 0, blockSameRequest:true});
			
			ajaxManager.add({
				type: "POST",
				url:  url_servicio_averia,
				data: "servicio=sincronizar_averia"+"&"+
					  "id_municipio_base="+id_municipio_base+"&"+
					  "id_opcion="+12+"&"+
					  "id_senal="+r['id_senal']+"&"+
					  "fecha_averia="+r['fecha_averia']+"&"+
					  "login_registro="+login_usuario+"&"+
					  "fecha_registro="+r['fecha_registro']+"&"+
					  "id_motiv_ave="+r['id_motiv_ave']+"&"+
					  "id_status_ave="+r['id_status_ave']+"&"+
					  "observaciones="+r['observaciones']+"&"+
					  "device_uuid="+device.uuid+"&"+
					  "device_platform="+device.platform,
				dataType: 'xml',
				success: function(response_xml)
				{
					$xml_resultado = $(response_xml);
					$status = $xml_resultado.find("status");
					
					if($status.length)
					{
						$status.each(function()
						{
							if($(this).text()=="S")
							{
								
							}
							else if($(this).text()=="N")
							{
								
							}
						});
					}
					else
					{
						navigator.notification.alert("No hay Respuesta del Servicio.", null, acronimo_sistema, "Aceptar");
					}
				}
			});
		}
    } 
}


/*
 * Buscar los Datos de una Avería (ADJUNTAR)
 */

function buscarDatosAve(id_averia, id_senal) {
    // Si la Consulta es por ID AVERIA
    if ( id_averia != "" ) {
        db.transaction(function(tx) {
            tx.executeSql('SELECT * FROM smist_datos_ave WHERE id_averia = ?', [ id_averia ], resBuscarDatosAve);
        });
        
    // Si la Consulta es por ID SEÑAL
    } else if ( id_senal != "" ) {
        limpiarBuscarDatosAve();

        id_opcion = $('#id_opcion').val();

        alert("Consultar Averías de una Señal");
        // consultarAveriasSenal( id_senal, id_opcion );
    }
}


/*
 * Respuesta a Buscar los Datos de una Avería (ADJUNTAR)
 */

function resBuscarDatosAve(tx, rs) {
    // Si hay una Respuesta exitosa
    if (rs.rows.length > 0) {
        r = rs.rows.item(0);

        $('#id_averia').val(r['id_averia']);

        buscarDatosSen(r['id_senal']);

        $('#fecha_averia').val(r['fecha_averia']);
        consultarNombreMotivAve(r['id_motiv_ave']);

        $('#observaciones_ave').val(r['observaciones']);
		
		navigator.notification.alert("Información Cargada.", null, acronimo_sistema, "Aceptar");
    	
    // Si no hay una Respuesta exitosa
    } else {
        limpiarBuscarDatosAve();
        navigator.notification.alert("No se encontró una Avería con el ID indicado.", null, acronimo_sistema, "Aceptar");
    }
}


/*
 * Consultar los Datos de una Avería para la Modificación por ID AVERIA
 */

function consultarModificarDatosAve(id_averia, id_senal) {
    // Si la Consulta es por ID AVERIA
    if ( id_averia != "" ) {
        db.transaction(function(tx) {
            tx.executeSql('SELECT * FROM smist_datos_ave WHERE id_averia = ?', [ id_averia ], resConsultarModificarDatosAve);
        });
    
    // Si la Consulta es por ID SEÑAL
    } else {
        limpiarModificarDatosAve();
        
        id_opcion = $('#id_opcion').val();

        alert("Consultar Averías de una Señal");
        // consultarAveriasSenal( id_senal, id_opcion );
    }
}


/*
 * Respuesta a Consultar los Datos de una Avería para la Modificación por ID AVERIA
 */

function resConsultarModificarDatosAve(tx, rs) {
    // Si hay una Respuesta exitosa
    if (rs.rows.length > 0) {
        r = rs.rows.item(0);

        $('#id_averia').val(r['id_averia']);

        buscarDatosSen(r['id_senal']);

        $('#fecha_averia').val(r['fecha_averia']);
        $('#id_motiv_ave').val(r['id_motiv_ave']);

        $('#observaciones_ave').val(r['observaciones']);
		
		navigator.notification.alert("Información Cargada.", null, acronimo_sistema, "Aceptar");
    	
    // Si no hay una Respuesta exitosa
    } else {
        limpiarBuscarDatosAve();
        $('#id_motiv_ave').val("");
		navigator.notification.alert("No se encontró una Avería con el ID indicado.", null, acronimo_sistema, "Aceptar");
    }
}


/*
 * Consultar los Datos de una Avería por ID AVERIA o ID SEÑAL
 */

function consultarDatosAve(id_averia, id_senal) {
    // Si la Consulta es por ID AVERIA
    if ( id_averia != "" ) {
        db.transaction(function(tx) {
            tx.executeSql('SELECT * FROM smist_datos_ave WHERE id_averia = ?', [ id_averia ], resConsultarDatosAve);
        });
        
    // Si la Consulta es por ID SEÑAL
    } else if ( id_senal != "" ) {
        limpiarConsultarDatosAve();

        id_opcion = $('#id_opcion').val();

        alert("Consultar Averías de una Señal");
        // consultarAveriasSenal( id_senal, id_opcion );
    }
}


/*
 * Respuesta a Consultar los Datos de una Avería por ID AVERIA o ID SEÑAL
 */

function resConsultarDatosAve(tx, rs) {
    // Si hay una Respuesta exitosa
    if (rs.rows.length > 0) {
        r = rs.rows.item(0);

        $('#id_averia').val(r['id_averia']);

        consultarDatosSen(r['id_senal']);

        $('#fecha_averia').val(r['fecha_averia']);
        consultarNombreMotivAve(r['id_motiv_ave']);

        $('#observaciones_ave').val(r['observaciones']);
		
		navigator.notification.alert("Información Cargada.", null, acronimo_sistema, "Aceptar");
    	
    // Si no hay una Respuesta exitosa
    } else {
        limpiarConsultarDatosAve();
		navigator.notification.alert("No se encontró una Avería con el ID indicado.", null, acronimo_sistema, "Aceptar");
    }
}


/*
 * Eliminar los Datos de una Avería por ID AVERÍA
 */

function eliminarDatosAve( id_averia ) {
    db.transaction(function(tx) {
        tx.executeSql('DELETE FROM smist_datos_ave WHERE id_averia = ?', [id_averia], resEliminarDatosAve);
    });
}


/*
 * Respuesta a Eliminar los Datos de una Avería por ID AVERÍA
 */

function resEliminarDatosAve(tx, rs) {
    // alert("resEliminarDatosAve Filas Affectadas: " + rs.rowsAffected);
}


/*
 * LIMPIAR LOS CAMPOS DE LOS FORMULARIOS DE AVERIA
 */

/*
 * Limpiar Datos del Formulario (Registrar / Modificar una Avería)
 */

function limpiarModificarDatosAve() {
    limpiarBuscarDatosSen();
    $('#id_averia').val("");
    $('#id_motiv_ave').val("");
    $('#fecha_averia').val("");
	$('#id_status_ave').val("");
    $('#fecha_reparacion').val("");
    $('#observaciones_ave').val("");
}


/*
 * Limpiar Datos del Formulario (Consultar una Avería)
 */

function limpiarConsultarDatosAve() {
    limpiarConsultarDatosSen();
    $('#id_averia').val("");
    $('#nombre_motiv_ave').val("");
    $('#fecha_averia').val("");
	$('#id_status_ave').val("");
    $('#fecha_reparacion').val("");
    $('#observaciones_ave').val("");
}


/*
 * Limpiar Datos del Formulario (Adjuntar Fotos a Avería)
 */

function limpiarBuscarDatosAve() {
    limpiarBuscarDatosSen();
    $('#id_averia').val("");
    $('#nombre_motiv_ave').val("");
    $('#fecha_averia').val("");
    $('#observaciones_ave').val("");
}


/*
 * PRUEBAS DE CARGA DE DATA DE XML A BD
 */

/*
 * Prueba de carga de todos los Datos del XML a BD
 */

function pruebaDatosAve() {
    db.transaction(function(tx) {
        tx.executeSql('SELECT * FROM smist_datos_ave', [], resPruebaDatosAve);
    });
}


/*
 * Respuesta a la Prueba de carga de todos los Datos del XML a BD
 */

function resPruebaDatosAve(tx, rs) {
    alert("Cantidad resPruebaDatosAve: " + rs.rows.length + " -> 1");
	for(var i=0; i < rs.rows.length; i++) {
		r = rs.rows.item(i);
		//alert("resPruebaDatosAve: " + r['id_averia'] + " - " + r['id_senal'] + " - " + r['fecha_averia'] + " - " + r['id_motiv_ave'] + " - " + r['observaciones']);
	}
}